FUNCTION TEST_BINARY_SEARCH : BOOL
  VAR
    // 测试数组（必须是有序的）
    iArrData : ARRAY[0..4] OF INT := [1, 2, 5, 8, 9];
    // 查找结果
    liResult : LINT;
    // 测试结果
    bPassed : BOOL := FALSE;
  END_VAR

  // 测试查找存在的元素（中间位置）
  liResult := BINARY_SEARCH(ADR(iArrData), ARRAY_SIZE(iArrData), 5);
  
  // 验证结果：应该返回索引2（第3个位置）
  IF liResult = 2 THEN
    // 测试查找不存在的元素
    liResult := BINARY_SEARCH(ADR(iArrData), ARRAY_SIZE(iArrData), 10);
    
    // 验证结果：应该返回-1（未找到）
    IF liResult = -1 THEN
      // 测试查找第一个元素
      liResult := BINARY_SEARCH(ADR(iArrData), ARRAY_SIZE(iArrData), 1);
      
      // 验证结果：应该返回索引0（第1个位置）
      IF liResult = 0 THEN
        // 测试查找最后一个元素
        liResult := BINARY_SEARCH(ADR(iArrData), ARRAY_SIZE(iArrData), 9);
        
        // 验证结果：应该返回索引4（第5个位置）
        IF liResult = 4 THEN
          bPassed := TRUE;
        END_IF;
      END_IF;
    END_IF;
  END_IF;

TEST_BINARY_SEARCH := bPassed;
  
END_FUNCTION
